package com.trf.member.controller;

import com.trf.member.base.Result;
import com.trf.member.entity.Staff;
import com.trf.member.req.PasswordREQ;
import com.trf.member.service.IStaffService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author 小小唐
 * @Date 2023/3/6-星期一-20:23
 * 密码信息表  前端控制器
 */
@RestController
@RequestMapping("/user")
public class AuthController {

    @Autowired
    private IStaffService staffService;

    /**
     * 校验原密码是否正确
     * @param req 密码详情
     * @return
     */
    @PostMapping("/pwd")
    public Result checkPwd(@RequestBody PasswordREQ req){
        return staffService.checkPassword(req);
    }

    /**
     * 修改密码
     * @param req 密码详情
     * @return
     */
    @PutMapping("/pwd")
    public Result updatePwd(@RequestBody PasswordREQ req){
        return staffService.updatePassword(req);
    }

    /**
     * 员工登录
     * 校验登录用户名密码，登录成功后，
     * 生成 token 响应给客户端
     * @param staff 员工详情
     * @return
     */
    @PostMapping("/login")
    public Result login(@RequestBody Staff staff){
        return staffService.login(staff.getUsername(),staff.getPassword());
    }

    /**
     * 通过token获取用户信息
     * @param token
     * @return
     *//*
    @GetMapping("/info/{token}")
    public Result getUserInfo(@PathVariable("token") String token){
        return staffService.getUserInfo(token);
    }*/

    /**
     * 通过token获取用户信息
     * @param token 身份令牌
     * @return
     */
    @GetMapping("/info")
    public Result getUserInfo(@RequestParam("token") String token){
        return staffService.getUserInfo(token);
    }

    /**
     * jwt令牌无法手动让它失效，在前端点击退出时直接删除localStorage中的数据，
     * 如果需要可以使用将jwt通过redis存储，每次请求时从redis查询是否存在，
     * 如果不存在，则认为未登录已退出。
     * @return
     */
    @PostMapping("/logout")
    public Result logout(){
        return Result.ok();
    }
}
